import fs from 'fs'
import path from 'path'
import multer from 'multer'
import dayjs from 'dayjs'
import {UPLOAD} from './constant.js'

// 确保目录存在
if (!fs.existsSync(UPLOAD.PATH)) {
	fs.mkdirSync(UPLOAD.PATH, { recursive: true }); // recursive: true 允许创建多级目录
}

const storage = multer.diskStorage({
	// 用来配置文件上传的位置
	destination: (req, file, cb) => {
		// 调用 cb 即可实现上传位置的配置
		cb(null, UPLOAD.PATH)
	},
	// 用来配置上传文件的名称（包含后缀）
	filename: (req, file, cb) => {
		//filename 用于确定文件夹中的文件名的确定。 如果没有设置 filename，每个文件将设置为一个随机文件名，并且是没有扩展名的。
		const {fieldname, originalname} = file
		// 获取文件的后缀
		const {ext, name} = path.parse(originalname)
		const saveName = `${dayjs().format('YYYYMMDDHHmmssSSS')}-${fieldname}-${name}${ext}`
		// 拼凑文件名
		cb(null, saveName)
	}
})

export const uploader = multer({storage})
